A database is an organized collection of data that can be used by client devices for many different purposes. The usage of a database is typically managed by a database management system (DBMS) having servers (DBMS servers) that maintain the database and manage interactions with and transactions requested by client devices. Basically, software on the client device interacts with software on the DBMS server through a communications network to initiate and execute a transaction. The transactions are guided by a set of routines, protocols and toots defined by an application-programming interface (API).
In a traditional DBMS, when a client device wants to access a database, it will formulate a query or request for information access to the database. In response to the request, at least one statement will be generated that, when executed by the DBMS server, satisfy the request. Examples of statements include INSERT, COPY, and UPDATE, which insert data into the database, copy data within the database, and update data within the database, respectively. In the event that the client device has data (client data) that it wants to insert into the database or update data within the database, once the statement is generated, the client device can call an API and provide the client data to the DBMS server that will execute the statement.
The client data is typically communicated from the client device to the DBMS server in any one of a number of text formats including, for example, JavaScript Object Notation (JSON) and Extensible Markup Language (XML). However, data is not typically stored in the database in a text format. The format in which data is stored in a database, referred to herein as the raw storage format, is typically proprietary and thus different for different databases. As a result, when the DBMS server receives the client data, it typically needs to convert the data from a text format to the raw storage format of the database.
To illustrate, a client device that wants to update a record in a relational database may form a request that includes a statement that looks like INSERT INTO TABLEA (col1=‘A’, Colb=10). In this statement, the client data (col1=‘A’, Colb=10) is in a text format. However, the raw storage format of the database could look something like ‘00101 A02002010.’ As a result, in order to execute the INSERT statement, the DBMS server needs to convert the text-based data (provided by the client device) to the appropriate raw storage format of the database.
It can therefore be understood that in a traditional DBMS, the DBMS servers need to essentially perform such conversions (text format to raw storage format) for each database request from every client device using the database. As the number of client devices accessing the database and the number of database transactions gets large, the conversions can require a substantial amount of server computing power and, as a result, DBMS performance can suffer.